package com.atguigu.mybatis.mapper;

import com.atguigu.mybatis.pojo.User;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserMapper {

    /*
    接口文件（Interface）要和映射文件（XML）两点一致
    1.映射文件中的namespace的值为接口文件的全类名
    2.映射文件中SQL语句的id要为接口文件中相应接口函数的函数名
     */

    /*
    添加用户信息
     */
    public int insertUser(User user);
    /*
    删除用户信息
     */
    public int deleteUser();
    /*
    修改用户信息
     */
    public int updateUser();
    /*
    根据id查询一个用户信息
     */
    public User getUserById(@Param("id") int id);
    /*
    查询所有用户信息
     */
    public List<User> getAllUser();
    /*
    根据username获取用户信息
     */
    User getUserByUsername(String username);
    /*
    验证登录
     */
    User checkLogin(@Param("username") String username,@Param("password") String password);
    /*
    统计user数目
     */
    int countUser();
    /*
    根据id查询用户信息，并转换成map形式
     */
    Map<String ,Object> getUserByIdToMap(@Param("id") int id);

    /*
    查询所以用户信息，并转换成map形式
     */
    List<Map<String ,Object>> getAllUserToMap();

    /*
    使用注解MapKey来指定map的键
     */
    @MapKey("id")
    Map<String,Object> getAllUserToMapByMapKey();

    /*
    根据用户名进行模糊查询
     */
    List<User> getUserByLike(@Param("username") String username);

    /*
    批量删除
     */
    int deleteMore(@Param("ids") String ids);

    /*
    查给定表中的数据
     */
    List<User> getDataByTableName(@Param("tableName") String tableName);

    /*
    自动递增插入
     */
    int insertUserByGenerate(User user);
}
